package com.nbcio.pm.mapper;

import com.nbcio.common.mybatis.core.mapper.BaseMapperPlus;
import com.nbcio.pm.domain.PmProjectDocument;
import com.nbcio.pm.domain.vo.PmProjectDocumentVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 项目文档Mapper接口
 *
 * @author nbacheng
 */
public interface PmProjectDocumentMapper extends BaseMapperPlus<PmProjectDocument, PmProjectDocumentVo> {

    /**
     * 查询项目文档列表（带关联信息）
     *
     * @param projectId 项目ID
     * @param taskId 任务ID
     * @param parentId 父文档ID
     * @param docType 文档类型
     * @param docName 文档名称
     * @param isPublic 是否公开
     * @return 项目文档列表
     */
    List<PmProjectDocumentVo> selectVoListWithJoin(@Param("projectId") Long projectId,
                                                   @Param("taskId") Long taskId,
                                                   @Param("parentId") Long parentId,
                                                   @Param("docType") String docType,
                                                   @Param("docName") String docName,
                                                   @Param("isPublic") Boolean isPublic);

    /**
     * 查询文档树结构
     *
     * @param projectId 项目ID
     * @param parentId 父文档ID
     * @return 文档树列表
     */
    List<PmProjectDocumentVo> selectDocumentTree(@Param("projectId") Long projectId,
                                                 @Param("parentId") Long parentId);

    /**
     * 更新下载次数
     *
     * @param docId 文档ID
     * @return 更新结果
     */
    int updateDownloadCount(@Param("docId") Long docId);

    /**
     * 查询子文档数量
     *
     * @param parentId 父文档ID
     * @return 子文档数量
     */
    int countChildren(@Param("parentId") Long parentId);
}
